package cn.fj.hrm.basic.exception;

import cn.fj.hrm.basic.util.JsonResult;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

import java.util.List;

/**
 * 全局异常处理
 * @RestControllerAdvice 可以在controller执行前，后做一些事情
 */
@RestControllerAdvice
public class GlobalExceptionHandler {

    /**
     * 处理异常 - 参数验证异常
     * @param e
     * @return
     */
    @ExceptionHandler(MethodArgumentNotValidException.class)
    public JsonResult globalExceptionHandler(MethodArgumentNotValidException e){
        e.printStackTrace();
        //获取异常的字段和异常信息
        List<FieldError> fieldErrors = e.getBindingResult().getFieldErrors();
        String msg = "";
        for (FieldError fieldError : fieldErrors) {
            msg += fieldError.getDefaultMessage() + "<br/>";
        }
        return JsonResult.me().setSuccess(false).setMsg(msg);
    }



    /**
     * 处理其他异常
     * @param e
     * @return
     */
    @ExceptionHandler(Exception.class)
    public JsonResult exceptionHandler(Exception e){
        e.printStackTrace();
        return JsonResult.me().setSuccess(false).setMsg("啊，系统异常啦，我们正在殴打程序员..."+e.getMessage());
    }
}